import axios from "axios"

const instance = axios.create({
    // `baseURL` 将自动加在 `url` 前面，除非 `url` 是一个绝对 URL。
    // 它可以通过设置一个 `baseURL` 便于为 axios 实例的方法传递相对 URL
    // baseURL: 'http://kumanxuan1.f3322.net:8881/cms',
    baseURL: "/api",
    // `timeout` 指定请求超时的毫秒数(0 表示无超时时间)
    // 如果请求话费了超过 `timeout` 的时间，请求将被中断
    timeout: 1000,
    // `headers` 是即将被发送的自定义请求头
    // headers: { 'X-Custom-Header': 'foobar' }  // 这个请求头默认发请求是转 json 格式，而项目的是 form 表单格式
});

// 2.4、优化：统一在请求拦截器，给请求头携带 token，发送给后端校验登录状态; 解决的弊端： 创建 axios 实例只执行一次，没登录时没有 token，创建实例已经执行完，会获取不到 token; 在每一条接口请求配置请求头携带 token，一个个写太麻烦了且不利于维护; 所以统一在拦截器配置请求头携带 token
// 添加请求拦截器
instance.interceptors.request.use(function (config) {
    console.log("请求的暗号是？", config);
    // 在发送请求之前做些什么
    // 获取 token  配置请求头携带 token
    const token = localStorage.getItem("x-auth-token");
    // console.log({ token });
    if (token) config.headers["x-auth-token"] = token;
    return config;
}, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
});

// 添加响应拦截器
instance.interceptors.response.use(function (res) {
    console.log("响应的暗号是？", res);
    // 对响应数据做点什么
    if (res.data.code != 0 && res.data.code != 400 && res.data.code != 407) return alert(res.data.message)
    return res.data;
}, function (error) {
    // 对响应错误做点什么
    return Promise.reject(error);
});

export default instance;